package com.faithbj.service;

import java.util.List;
import java.util.Map;

import com.faithbj.common.model.CheckTotal;
import com.faithbj.common.model.compare.AFMOfficalData;
import com.faithbj.common.model.compare.CivilOfficalData;
import com.faithbj.common.model.compare.HPOfficalData;
import com.faithbj.common.model.compare.IBAOfficalData;
import com.faithbj.common.model.compare.PopulationOfficalData;
import com.faithbj.common.model.compare.SIOfficalData;
import com.faithbj.common.model.compare.TaxOfficalData;

/**
 * 电子比对Service
 * @author chen liu
 *
 */
public interface CompareService {
	/**
	 * 生成批次，发送委办
	 * @param batchingMap batching map
	 * @return null : success; not null:error message
	 */
	String genearateBatch(Map<String, List<CheckTotal>> batchingMap);

	/**
	 * 公积金管理委办返回数据save
	 * @param officalData
	 */
	void saveOrUpdateAFMOfficalData(AFMOfficalData officalData);

	/**
     * 民政局委办返回数据save
     * @param officalData
     */
	void saveOrUpdateCivilOfficalData(CivilOfficalData officalData);
	
	/**
     * 房产委办返回数据save
     * @param officalData
     */
	void saveOrUpdateHPOfficalData(HPOfficalData officalData);
	
	/**
     * 工商行政管理委办返回数据save
     * @param officalData
     */
	void saveOrUpdateIBAOfficalData(IBAOfficalData officalData);
	
	/**
     * 人口委办返回数据save
     * @param officalData
     */
	void saveOrUpdatePSOfficalData(PopulationOfficalData officalData);

	/**
     * 社会保险委办返回数据save
     * @param officalData
     */
	void saveOrUpdateSIOfficalData(SIOfficalData officalData);
	
	/**
     * 税务委办返回数据save
     * @param officalData
     */
	void saveOrUpdateTaxOfficalData(TaxOfficalData officalData);
	
	/**
	 * 查询需要更新的公积金委办列表
	 * @param batchNum
	 * @param departmentNum
	 * @param mainApplicantCardId
	 * @return
	 */
	List<AFMOfficalData> getAFMOfficalDataForUpdate(String batchNum, String departmentNum, String mainApplicantCardId);
	
	/**
     * 查询需要更新的民政局委办列表
     * @param batchNum
     * @param departmentNum
     * @param mainApplicantCardId
     * @return
     */
    List<CivilOfficalData> getCivilOfficalDataForUpdate(String batchNum, String departmentNum, String mainApplicantCardId);
    
    /**
     * 查询需要更新的房产局委办列表
     * @param batchNum
     * @param departmentNum
     * @param mainApplicantCardId
     * @return
     */
    List<HPOfficalData> getHPOfficalDataForUpdate(String batchNum, String departmentNum, String mainApplicantCardId);
    
    /**
     * 查询需要更新的工商行政管理委办列表
     * @param batchNum
     * @param departmentNum
     * @param mainApplicantCardId
     * @return
     */
    List<IBAOfficalData> getIBAOfficalDataForUpdate(String batchNum, String departmentNum, String mainApplicantCardId);
    
    /**
     * 查询需要更新的公安局委办列表
     * @param batchNum
     * @param departmentNum
     * @param mainApplicantCardId
     * @return
     */
    List<PopulationOfficalData> getPSOfficalDataForUpdate(String batchNum, String departmentNum, String mainApplicantCardId);
    
    /**
     * 查询需要更新的社会保险委办列表
     * @param batchNum
     * @param departmentNum
     * @param mainApplicantCardId
     * @return
     */
    List<SIOfficalData> getSIOfficalDataForUpdate(String batchNum, String departmentNum, String mainApplicantCardId);
    
    /**
     * 查询需要更新的税务委办列表
     * @param batchNum
     * @param departmentNum
     * @param mainApplicantCardId
     * @return
     */
    List<TaxOfficalData> getTaxOfficalDataForUpdate(String batchNum, String departmentNum, String mainApplicantCardId);
    
}
